package com.reliable.service.enums;

/**
 * 模板分析任务状态枚举
 */
public enum TemplateAnalysisTaskStatusEnum {
    /**
     * 待分析
     */
    PENDING(1, "待分析"),

    /**
     * 分析中
     */
    ANALYZING(2, "分析中"),

    /**
     * 成功
     */
    SUCCESS(3, "成功"),

    /**
     * 失败
     */
    FAILED(4, "失败"),

    /**
     * 部分成功
     */
    PARTIAL_SUCCESS(5, "部分成功");

    private final Integer code;
    private final String description;

    TemplateAnalysisTaskStatusEnum(Integer code, String description) {
        this.code = code;
        this.description = description;
    }

    public Integer getCode() {
        return code;
    }

    public String getDescription() {
        return description;
    }

    /**
     * 根据code获取枚举
     *
     * @param code 状态码
     * @return 对应的枚举值
     */
    public static TemplateAnalysisTaskStatusEnum fromCode(Integer code) {
        for (TemplateAnalysisTaskStatusEnum status : TemplateAnalysisTaskStatusEnum.values()) {
            if (status.getCode().equals(code)) {
                return status;
            }
        }
        return null;
    }

    /**
     * 判断是否为结束状态（成功、失败、部分成功）
     *
     * @param code 状态码
     * @return 是否为结束状态
     */
    public static boolean isEndStatus(Integer code) {
        return code != null && (code == SUCCESS.getCode() || code == FAILED.getCode() || code == PARTIAL_SUCCESS.getCode());
    }

    /**
     * 判断是否为运行状态（分析中）
     *
     * @param code 状态码
     * @return 是否为运行状态
     */
    public static boolean isRunningStatus(Integer code) {
        return code != null && code == ANALYZING.getCode();
    }
}